import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
import { RouterModule } from '@angular/router';
// delon
import { AlainThemeModule } from '@delon/theme';
import { DelonABCModule } from '@delon/abc';
import { DelonACLModule } from '@delon/acl';
import { DelonFormModule } from '@delon/form';

// #region third libs
import { NgZorroAntdModule } from 'ng-zorro-antd';
import { CountdownModule } from 'ngx-countdown';
import { TranslateModule } from '@ngx-translate/core';
import { AngularSplitModule } from 'angular-split';
import { AcademySelectComponent } from './common-component/academy-select.component';
import { ProfessionSelectComponent } from './common-component/profession-select.component';
import { CourseTypeSelectComponent } from './common-component/course-type-select.component';
import { GridSelectComponent } from './common-component/grid-select.component';
import { StringToNumberPipe } from './pipe/string-to-number.pipe';
import { ClassSelectComponent } from './common-component/class-select.component';
import { ChangePasswordComponent } from './change-password/change-password.component';
import { PasswordStrengthComponent } from './change-password/password-strength.component';
import { AttachSmallComponent } from './common-component/attach-small.component';
import { NotificationInformationDetailComponent } from '../project/component/icm-student-academic/notification-information/notification-information-detail.component';
const THIRDMODULES = [NgZorroAntdModule, CountdownModule, AngularSplitModule];
// #endregion

// #region your componets & directives
const COMPONENTS = [
  AcademySelectComponent,
  ProfessionSelectComponent,
  ClassSelectComponent,
  CourseTypeSelectComponent,
  GridSelectComponent,
  ChangePasswordComponent,
  PasswordStrengthComponent,
  AttachSmallComponent,
  NotificationInformationDetailComponent,
];
const DIRECTIVES = [];
// #endregion

@NgModule({
  imports: [
    CommonModule,
    FormsModule,
    RouterModule,
    ReactiveFormsModule,
    AlainThemeModule.forChild(),
    DelonABCModule,
    DelonACLModule,
    DelonFormModule,
    // i18n
    TranslateModule,
    // third libs
    ...THIRDMODULES,
  ],
  declarations: [
    // your components
    ...COMPONENTS,
    ...DIRECTIVES,
    StringToNumberPipe,
  ],
  exports: [
    CommonModule,
    FormsModule,
    ReactiveFormsModule,
    RouterModule,
    AlainThemeModule,
    DelonABCModule,
    DelonACLModule,
    DelonFormModule,
    TranslateModule,
    // third libs
    ...THIRDMODULES,
    // your components
    ...COMPONENTS,
    ...DIRECTIVES,
  ],
})
export class SharedModule {}
